제3장 데이터 타입의 길이의 결정
- 관계형 데이터베이스에서 제공하는 데이터 타입은 대개 CHAR, VARCAHR2, NUMBER, DATE, LONG, RAW, LONG RAW, ROWID 타입으로 분류한다.
- 우리는 원하는 정보를 가장 효율적으로 처리하기 위해서 적절한 데이터 타입의 선정이 필요함
- 적절하지 못한 데이터 타입은의 선정은 수행속도를 나쁘게 하고 불필요한 자원을 낭비를 가져온다.
- 옵티마이져의 액세스 경로 선정에 나쁜 영향을 미치기도 한다.
- 서로관계를 가지는 컬럼들에 대해 '데이터 타입의 일관성' 을 지키지 않을 경우에는 고생을 하는 경우가 많이 발생한다.
1. 데이터 타입의 선정 절차
- 데이터 모델링을 통해 작성된 ERD(Entity Realationship Diagram)를 이용하여 물리적 데이터베이스를 설계
- 테이블 결정 후 속성(Atrribute)을 컬럼(Column)으로, 관계(Relationship)을 외부키(Foreign Key)로 지정
- 각종 비지니스 룰(Business Rule)를 찾아 제약조건(Constraints)로 지정
- 컬럼의 데이터 타입과 길이를 결정
- 컬럼의 데이터 타입과 길이를 결정하기 위해서 우리가 해야할 절차
- 먼저 데이터가 문자타입인지 숫자타입인지 확인하여 문자타입이 고정길이로 할것인지, 가변길이로 할것인지 결정
- 그밖에 음성이나 이미지 정보를 관리하거나 LONG타입의 사용여부를 결정한다.
- 날짜처리를 위해 DATE타입을 사용할것인지, 일반문자타입으로 할 것이니 결정
- 데이터 값이 숫자타입이라 할 지라도 문자타입으로 할 필요는 없는 검토
- 숫자타입의 경우 인덱스르 사용할수 없게 하므로 신중하게 판단해야하며 숫자타입으로 결정했다면 소수점 자리수를 확실히 결정
- 데이터 타입이 결정되었드며 선정된 타입의 특성에 따라 적적한 길이를 확정한다.
1.1 문자타입, 숫자타입의 결정
- 우리가 결정하고자 하는 컬럼의 값이 문자형태인지 숫자 형태인지 조사한다.
- 연산을 하게되는 컬럼의 값은 당연히 숫자타입이겠지만, 코드화시킨 컬럼이나 그밖의 각종 인조키(Artifical Key)들은 숫자타입으로 할수도 있고 문자로 할수도 있다.
- 인조키란 임의 값에 의미를 부여하는 것이므로, 상황에 따라 어떠한 값을 부여할 수도 있다.
- 가능한 문자와 숫자들 같이 결합하는것은 좋지 못하다.
- 필요에 따라 변별력(Readability)을 향상시키고 사용상의 편의를 위해서 문자와 숫자의 조합도 좋은 방법이 될수 있다.
- 데이터 값이 숫자이든 문자이든 간에 그 데이터 타입을 어떻게 하느냐는 아주 중요한 사항이다.
- 만약 숫자를 가지는 한자리로 지정된 컬럼을 NUMBER타입으로 했다면 오히려 저장되는 길이가 늘어난다.
- 다른컬럼과 비교될 때 내부적인 변형을 일으켜 인덱스를 사용할수 없게 만들지 모른다.
1.2 문자타입의 확정
문자타입의 확정을 위해서 우리가 해야할 절차
- 먼저 일반 문자타입(CHAR, VARCHAR2)로 할 것인지 특수형태(LONG, RAW, LONG RAW)로 할것인지를 결정한다
- 만약 일반 문자타입으로 결정했다면 고정길이(CHAR)로 할것인지 가변길이로(VARCHAR2)로 할것인지를 결정한다.
- 최대길이를 조사하여 컬럼의 길이를 결정한다.
- 최대길이가 2000바이트가 넘는다면 LONG타입의 사용여부를 결정한다.
- LONG타입은 약간의 제한이 있기 때문에 현재의 사용환경이 그 제한요소에 저촉되지 않는지 확인해야 한다.
- 가변길이(VARCHAR2)를 여러개 사용할 필요가 있는 검토하여 결정한다.
- 음성(Sound)나 영상(Image)처리를 해야하는 특수한 경우는 처리할 양이나 보유한 장비에 따라 테이블의 컬럼으로 지정할 것인지 다른 매체를 이용할 것인지 결정한다.
1.3 숫자타입의 확정